;Exam2010H22FallPrg3   ZZ
;Exam2010H22HPrg3
;rbg̋t]
;----------------------
MAIN START
	LAD GR1,WORD
	LD GR2,P
	LD GR3,Q
	CALL PREVRS
	RET
WORD DC #BE5A  ;
HOZON DC #BE5A ;rp̌̃rbg
P DC 8
Q DC 4
	END
;---------------
PREVRS START
	RPUSH
	LD GR4,0,GR1   ;rbgۑ
	CALL REVRS     ;rbg̃rbg̕тt]
	LD GR5,0,GR1   ;GR5 <--- t]rbg
	LD GR6,=16
	SUBA GR6,GR3   ;GR6 <--- 16-q
	SRL GR5,0,GR2  ;t]rbgaE[Ɉړ
	SLL GR5,0,GR6  
    ;t]rbga[Ɉړ @@ E
  SRL GR5,0,GR2  ;t]rbgaorbgEɈړ
    ;------------------------
	LD GR6,=#8000
	SRA GR6,-1,GR3 ;QrbgAP̕т쐬
	SRL GR6,0,GR2  ;orbgEֈړ
	XOR GR6,=#FFFF ;POɁAOPɃrbg𔽓]
	AND GR6,GR4    
    ;̃rbg񒆂̕rbgaɃ[ݒ
	;-----------------------------
	OR GR6,GR5     ; @@@A
	ST GR6,0,GR1
	RPOP
	RET
	END	
;------------------------
LREVRS START
	RPUSH
	LD GR3,GR1 ;WORDS̐擪AhX
	LD GR4,GR2 ;@m
	SUBA GR4,=1
	JZE LOOP2
	ADDA GR4,GR1
LOOP1 LD GR5,0,GR3 ;GR3̎wGR4w̓eւ
	LD GR6,0,GR4  ;
	ST GR5,0,GR4  ;
	ST GR6,0,GR3  ;
	LAD GR3,1,GR3 ;GR3̌Ɉʒut
	LAD GR4,-1,GR4 ;GR4ǑɈʒut
	CPA GR3,GR4
	JPL LOOP1 ;[܂̓}CiX̎ꏇt]
LOOP2 CALL REVRS
	LAD GR1,1,GR1 ;̌̃AhX
	SUBA GR2,=1 ;čꐔJEg
	JNZ LOOP2 ;GR2[ɂȂƏI
FIN3  RPOP
	RET
	END
;--------------------
REVRS START
	RPUSH
	LD GR4,=0    ;ʂ̃rbg
	LAD GR2,15   ;[vJE^
	LD GR3,0,GR1 ; GR3 <--- rbg
LOOP SLL GR4,1   ;ʂ̃rbgVtg
	SRL GR3,1    ;̃rbgEVtg
	JOV ON   ;̃rbgE[ɂP΂nmց@@E
	JZE FIN1 ;̃rbg̎c̃rbgׂ͂ă[
	JUMP OFF
ON OR GR4,=#0001
OFF SUBA GR2,=1 ;JE^P
	JMI FIN2    ;PUrbg
	JUMP LOOP
FIN1 SLL GR4,0,GR2
;ʂ̃rbgc̃rbgVtg@@C
FIN2 ST GR4,0,GR1
	RPOP
	RET
	END
;----------------
